程式碼除了建置後要能正確運行以外,還得考慮後續維護性,如果當初寫得太難懂,後續發生 bug 或弱點要修補時會因為難以閱讀程式碼導致排查困難
子曰:「工欲善其事,必先利其器」,前面學會使用 Android Studio 與 Gradle 協助開發,今天則是要借助 formmater 和 linter 養成開發好習慣
Formatter 是處理程式碼風格的工具,讓程式碼風格統一,像是換行、空行、空格、縮排、順序、駝峰命名規範等等,可以避免不同開發者寫出同樣程式碼卻長得完全不一樣
會增加理解複雜度、可能產生問題的程式碼,像是過長的函式、無窮迴圈、hardcoding 等等,被稱為異味(bad smell),linter 就是負責挑出這些異味,讓程式碼容易理解、維護,減少意外或產生意外的可能性
Formatter 單純調整格式,並不會影響語意,沒辦法找出邏輯錯誤;linter 專注於挑出語意上的瑕疵,而不是格式問題
不過現在大部分 Linter 都有附帶 Formatter 功能,可以一鍵調整程式碼同時找出有潛在問題的程式碼
pan93412 做了一張非常棒的比較圖 https://twitter.com/byStarTW/status/1568217424658583553
畢竟 Kotlin 跟 Intellij IDEA 都是 JetBrains 一手帶大的,Intellij 內建的 formatter 自然會完全遵照 Kotlin 官方風格,Reformat code 功能按下去就對了!
官方網站:https://detekt.dev/
一款功能非常強大的 linter,每條規則都可以細部調整、排除特定規則、條件,而且支援 HTML、Markdown、Sarif 等多種報告格式,整合到 CI 上非常方便
官方網站:https://pinterest.github.io/ktlint/
看名子就知道是款 linter,而且是 formatter+linter,不過他預設的 linter 規則比 Detekt 少,我主要是放到 CI 上當作 formatter 在用